package com.xiaomei.manager.model;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;


public class SysRole {
	 private Long id; //编号
	    private String role; //角色标识 程序中判断使用,如"admin"
	    private String description; //角色描述,UI界面显示使用
	    private String resourceIds; //拥有的资源
	    private List<Long> resourceIdLst; //拥有的资源列表
	    private Boolean available = Boolean.FALSE; //是否可用,如果不可用将不会添加给用户

	    public SysRole() {
	    }

	    public SysRole(String role, String description, Boolean available) {
	        this.role = role;
	        this.description = description;
	        this.available = available;
	    }

	    public Long getId() {
	        return id;
	    }

	    public void setId(Long id) {
	        this.id = id;
	    }

	    public String getRole() {
	        return role;
	    }

	    public void setRole(String role) {
	        this.role = role;
	    }

	    public String getDescription() {
	        return description;
	    }

	    public void setDescription(String description) {
	        this.description = description;
	    }
        
	    public List<Long> getResourceIdLst() {
	        if(resourceIdLst == null) {
	        	resourceIdLst = new ArrayList<Long>();
	        }
	        return resourceIdLst;
	    }

	    public void setResourceIdLst(List<Long> resourceIdLst) {
	        this.resourceIdLst = resourceIdLst;
	    }

	    public String getResourceIds() {
			return resourceIds;
		}

		public void setResourceIds(String resourceIds) {
			this.resourceIds = resourceIds;
			
			if(StringUtils.isEmpty(resourceIds)) {
	            this.resourceIdLst = null;
				return;
	        }
			
			List<Long> lst = new ArrayList<Long>();
	        String[] resourceIdStrs = resourceIds.split(",");
	        for(String resourceIdStr : resourceIdStrs) {
	            if(StringUtils.isEmpty(resourceIdStr)) {
	                continue;
	            }
	            lst.add(Long.valueOf(resourceIdStr));
	        }
	        setResourceIdLst(lst);
		}
	    
	    
	    

	    public Boolean getAvailable() {
	        return available;
	    }

	    public void setAvailable(Boolean available) {
	        this.available = available;
	    }

	    @Override
	    public boolean equals(Object o) {
	        if (this == o) return true;
	        if (o == null || getClass() != o.getClass()) return false;

	        SysRole role = (SysRole) o;

	        if (id != null ? !id.equals(role.id) : role.id != null) return false;

	        return true;
	    }

	    @Override
	    public int hashCode() {
	        return id != null ? id.hashCode() : 0;
	    }

	    @Override
	    public String toString() {
	        return "Role{" +
	                "id=" + id +
	                ", role='" + role + '\'' +
	                ", description='" + description + '\'' +
	                ", resourceIds=" + resourceIds +
	                ", available=" + available +
	                '}';
	    }
}